﻿using System;
using System.Collections.Generic;
using System.Data.OleDb;
using System.Linq;
using System.Text;
using DTO;

namespace DAO
{
    public class TuKhoaDuongDAO : DataProvider
    {
        protected override object GetDataRowFromDataReader(OleDbDataReader dr)
        {
            TuKhoaDuongDTO tuKhoaDuongDTO = new TuKhoaDuongDTO();
            if (!dr.IsDBNull(0))
            {
                tuKhoaDuongDTO.MaTuKhoaDuong = dr.GetInt32(0);
            }

            if (!dr.IsDBNull(1))
            {
                tuKhoaDuongDTO.TuKhoaDuong = dr.GetString(1);
            }

            if (!dr.IsDBNull(2))
            {
                tuKhoaDuongDTO.MaDuong = dr.GetInt32(2);
            }

            return (object)tuKhoaDuongDTO;
        }

        public List<TuKhoaDuongDTO> Search(string strInput)
        {
            List<TuKhoaDuongDTO> lstTuKhoaDuongDTO = new List<TuKhoaDuongDTO>();
            try
            {
                strInput = strInput.Replace(@"'", @"''");
                //string strSQL = @"SELECT *" +
                //                @" FROM TUKHOADUONG" +
                //                @" WHERE '" + strInput + @"' LIKE " + @"'*' + TuKhoaDuong + '*'";
                //string strSQL = @"SELECT * FROM TUKHOADUONG WHERE INSTR('" + strInput + @"', TuKhoaDuong) > 0";
                string strSQL = String.Format(
                    "SELECT * FROM TUKHOADUONG WHERE INSTR('{0}', TuKhoaDuong) > 0",
                    strInput);

                using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                {
                    TuKhoaDuongDTO tuKhoaDuongDTO = null;
                    while (dr.Read())
                    {
                        tuKhoaDuongDTO = (TuKhoaDuongDTO)GetDataRowFromDataReader(dr);
                        lstTuKhoaDuongDTO.Add(tuKhoaDuongDTO);
                    }
                }

                if (FLAG)
                {
                    if (0 == lstTuKhoaDuongDTO.Count)
                    {
                        strSQL = String.Format(
                            "SELECT * FROM TUKHOADUONG WHERE INSTR(TuKhoaDuong, '{0}') > 0",
                            strInput);

                        using (OleDbDataReader dr = this.ExcuteReader(strSQL))
                        {
                            TuKhoaDuongDTO tuKhoaDuongDTO = null;
                            while (dr.Read())
                            {
                                tuKhoaDuongDTO = (TuKhoaDuongDTO)GetDataRowFromDataReader(dr);
                                lstTuKhoaDuongDTO.Add(tuKhoaDuongDTO);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                lstTuKhoaDuongDTO = new List<TuKhoaDuongDTO>();
            }

            return lstTuKhoaDuongDTO;
        }

        public List<TuKhoaDuongDTO> AutoCompleteTuKhoaDuong(String strInput)
        {
            List<TuKhoaDuongDTO> lstTuKhoaDuong = new List<TuKhoaDuongDTO>();
            try
            {
                string strSQL = @"SELECT DISTINCT TOP 10 TuKhoaDuong" +
                                @" FROM TUKHOADUONG" +
                                @" WHERE TuKhoaDuong LIKE '%" + strInput +
                                @"%'";
                OleDbDataReader dr = this.ExcuteReader(strSQL);

                TuKhoaDuongDTO tuKhoaDuongDTO = null;

                while (dr.Read())
                {
                    tuKhoaDuongDTO = new TuKhoaDuongDTO();
                    tuKhoaDuongDTO.TuKhoaDuong = dr.GetString(0);
                    lstTuKhoaDuong.Add(tuKhoaDuongDTO);
                }


            }
            catch (Exception ex)
            {
                lstTuKhoaDuong = new List<TuKhoaDuongDTO>();
            }
            return lstTuKhoaDuong;
        }
        public List<TuKhoaDuongDTO> AutoCompleteTuKhoaDuongTheoDichVu(String strInput, int MaDichVu)
        {
            List<TuKhoaDuongDTO> lstTuKhoaDuong = new List<TuKhoaDuongDTO>();
            try
            {
                string strSQL = @"SELECT DISTINCT TOP 5 TUKHOADUONG.TuKhoaDuong" +
                                @" FROM TUKHOADUONG , DUONG , DULIEU" +
                                @" WHERE TUKHOADUONG.TuKhoaDuong LIKE '%" + strInput +
                                @"%' AND " +
                                @"TUKHOADUONG.MaDuong = DUONG.MaDuong AND " +
                                @"DUONG.MaDuong = DULIEU.MaDuong AND " +
                                @"DULIEU.MaDichVu = " + MaDichVu.ToString();
                OleDbDataReader dr = this.ExcuteReader(strSQL);

                TuKhoaDuongDTO tuKhoaDuongDTO = null;
                while (dr.Read())
                {
                    tuKhoaDuongDTO = new TuKhoaDuongDTO();
                    tuKhoaDuongDTO.TuKhoaDuong = dr.GetString(0);
                    // tenDiaDiemDTO.MaTenDiaDiem =  dr.GetInt32(1);
                    lstTuKhoaDuong.Add(tuKhoaDuongDTO);
                }
            }
            catch (Exception ex)
            {
                lstTuKhoaDuong = new List<TuKhoaDuongDTO>();
            }
            return lstTuKhoaDuong;
        }
    }
}
